在 Combine 框架中,Publisher 是一個協議,它代表了一個能夠發佈數據和事件的類型。Publisher 可以發出三種事件:
Publisher 有以下特點和使用場景:
map
、filter
、merge
等。簡單例子:
import Combine
let myPublisher = Just("Hello, Combine!")
myPublisher
.sink(receiveCompletion: { completion in
print("Completed with \(completion)")
}, receiveValue: { value in
print("Received value: \(value)")
})
此例中,Just
是一個 Publisher,會立即發佈一個值並完成。
AnyCancellable 是 Combine 框架中的一個類別,它用來掌控和取消 Publisher 和 Subscriber 之間的訂閱關係。其主要用途如下:
cancel()
方法來取消訂閱。示例:
import Combine
var cancellables = Set<AnyCancellable>()
let myPublisher = Just("Hello, Combine!")
myPublisher
.sink(receiveCompletion: { completion in
print("Completed with \(completion)")
}, receiveValue: { value in
print("Received value: \(value)")
})
.store(in: &cancellables)
在這個例子中,store(in: &cancellables)
將返回的 AnyCancellable 實例存儲在 Set 中,確保在需要時能夠取消訂閱。